1. Field of the Invention
This invention relates to the field of barcodes and more particularly to a system for printing barcodes from within a standard application.
2. Description of the Related Art
Barcodes and the printing of such have been well known and heavily utilized for many years. It is difficult to find a product in the US market that doesn't have an associated barcode for tracking and/or check-out purposes. Most containers, packages and wrappers carry a barcode to identify their contents. Barcodes help track these packages and accurately identify them to sales personnel during a sales checkout process, thereby assuring accurate billing and inventory management. It only takes seconds to scan an object during inventory or checkout, whereas many seconds would be required to key in a description or product-id of the product.
Besides being efficient, barcodes are more accurate than keying in the same information. Barcodes have been shown to be at least 99% accurate, whereas operator data entry of identification numbers is far less accurate.
Barcodes are basically a printed representation of data that can be optically scanned to read the data into a computer system. The data are often serial numbers, passport numbers, product identification numbers, quantities, etc. Barcodes operate on a simple principle of alternating black and white stripes/characters. The data is encoded into the barcode by a specific altering of these stripes to present a pattern of these stripes that can be scanned and recognized by a computer system.
There are several standards for barcodes, but generally, two types: linear and two dimensional. Linear barcodes are the best known and appear as a linear set of thin or thick black bars separated by thin or thick white spaces. Two dimensional barcodes contain more data and appear as a cluster of black and white squares within a border of black and white lines. As an example, a linear barcode such as might appear on a cereal box might have 10 decimal digits of information while a one inch square two dimensional barcode is able to encode the entire U.S. Constitution.
Several standards have evolved regarding the printing and scanning of barcodes. Using such standards assures that, by printing a barcode following a given standard, the barcode will be readily scanned by a scanner designed to scan that given standard. Each standard has its own pattern of black lines and white spaces and rules for encoding characters (numbers or letters/numbers). For example, the best known barcode standard is the Universal Price Code called U.P.C./EAN.
Barcodes are often printed directly on the product packaging, often typeset along with other label information. Alternately, a barcode is printed on a label that is applied to an object. The labels cam be printed on a standard printer such as an inkjet or LaserJet printer; or there are many specialized label printers such as those manufactured by Zebra Technologies Corporation.
Several applications for barcodes require printing of the barcodes from within a standardized computer application such as Microsoft Corporation's Publisher®, Word® and Excel® or CrystalReports from BusinessObjects®. There are many uses for printing barcodes within documents, not to mention the simple printing of labels. One example is printing of user manuals that contain a barcode on the front or back cover. Lately, barcodes have appeared as a way to track documents. Often, especially under process controls such as required by IS09000, product development documents are distributed at various stages and, to assure an entire team is working from the same base document, all copies are returned before distribution of updated copies. If each document is bar-coded with a serial number, the process of determining which documents have been returned is made more efficient and accurate.
Another application of barcodes on documents is security. In such, an identifying barcode (serial number) is printed on the cover and, optionally, every page of classified documents. Thereafter, if the document is copied, the barcode is copied as well and all copies can be traced back to the individual responsible for the original copy by the serial number of the copy.
To date, it has been difficult to embed bar-code printing into such software applications. Such barcode printing requires the installation of additional barcode fonts or barcode graphic objects. Implementation with barcode fonts requires two components be added to these software applications. The first is a special font designed specifically for barcode printing. The second is a program or macro (e.g., written in Microsoft Corporation's Visual Basic®) that accepts as input the data to be encoded as a barcode and outputs the proper font characters associated with the barcode standard encoding of the data. For example, IDAutomation.com, Inc., offers such fonts and software whereby a Microsoft's Excel® cell A2 containing “=Code128(A1)” would display a barcode for the data in cell A1 if the font of A2 is a barcode font from IDAutomation. Traditionally, when a barcode is needed in such a software application, it is either printed as a graphic object such as with an ActiveX control or as a barcode font. These graphic objects and barcode fonts must be installed on each computer that prints barcodes with the software application. This may cause problems on some computers and it increases the complexity, especially if documents are distributed to many computers, whereby, each computer requires the same drivers and additional fonts or the installation of a graphic object component. Additionally, implementation with barcode graphic objects is incompatible with many applications, such as how ActiveX Controls are incompatible with Crystal Reports for example.
The above system of printing barcodes within application works well for many software applications and for many uses. On the down side, it requires the installation of a special bar-code font or graphic objects which may have some limitations on the resulting barcode printing. For example, the height of a barcode font cannot be precisely adjusted because it has a fixed height assigned to it and they do not stack well.
Another method exists for creating barcodes from within a software application that doesn't use additional barcode fonts or graphics objects. An example of such is “Barcode Basics” found at www.BrianDunning.com. This method works by using spaces and the underscore character at Unicode location 95 rotated at a 290 degree angle with the line spacing reduced to 1 point. Each underscore becomes a black bar and each space becomes a white bar. Lines of the rotated bar and space patterns are then stacked to create a bar code symbol. This method works only in a very narrow subset of software applications (FileMaker is the only application known to date), probably because other applications cannot print the underscore and rotate it in the same way to create a proper barcode symbol.
What is needed is a system and method of printing barcodes from within an application that doesn't require special fonts and is scalable to print linear and two dimensional barcodes in varying sizes.